Computing systems often use a non-volatile memory device, such as a non-volatile random access memory (“NVRAM”) device, to store the system firmware. In order to update the firmware, it has long been necessary to perform a special update procedure. For instance, in some computer systems, it is necessary to prepare a special boot disk, and to initialize the computer system from the disk in order to update the firmware. This process, however, can be complicated and time consuming, especially for users that are not familiar with the steps necessary to create and utilize a firmware update boot disk.
In view of the difficulty in creating and utilizing a firmware update boot disk, it is desirable to be able to update the firmware utilizing a traditional application program executing within a runtime environment, such as an operating system or an extensible firmware interface (“EFI”) runtime environment. In order to update the NVRAM in this manner, however, it is necessary for the application program to communicate with and utilize the services of programs made available by the firmware itself.
In order to enable communication between a runtime environment application program and firmware programs, it is necessary for these programs to exchange data. One way this has been accomplished in the past is by permanently reserving certain memory areas for data exchange between the operating system and the firmware. However, permanently reserving certain memory areas for data exchange in this manner requires each program to know the location of the reserved area in advance. If it becomes necessary to relocate the reserved area, the application program and the firmware programs must be modified. Accordingly, permanently reserving a memory location for data exchange between an application program and a firmware program is a less than ideal method of data exchange. This problem is also made more difficult to overcome when the computer system has multiple processors.
It is with respect to these considerations and others that the various embodiments described below have been made.